<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>公告管理</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="../static/lib/layui-v2.5.5/css/layui.css" media="all">
    <link rel="stylesheet" href="../static/css/public.css" media="all">
</head>
<body>
<div class="layuimini-container">
    <div class="layuimini-main">
        <!--头部工具栏区域-->
        <script type="text/html" id="toolbarDemo">
            <div class="layui-btn-container">
                <button class="layui-btn layui-btn-normal layui-btn-sm data-add-btn" lay-event="add"> 添加 </button>

            </div>
        </script>
        <!--表格区域-->
        <table class="layui-hide" id="currentTableId" lay-filter="currentTableFilter" ></table>
        <!--行工具栏-->
        <script type="text/html" id="currentTableBar">
            <a class="layui-btn layui-btn-normal layui-btn-xs data-count-edit" lay-event="edit">编辑</a>
            <a class="layui-btn layui-btn-xs layui-btn-danger data-count-delete" lay-event="delete">删除</a>
        </script>
        <!--添加修改窗口弹出层-->
        <div style="display: none;padding:20px" id="addOrUpdateWindow">
            <form class="layui-form layuimini-form " id="dataFrm" lay-filter="dataFrm">
                <!--主键隐藏域，保存主键-->
                <input type="hidden" name="id" />
                <div class="layui-form-item">
                    <div class="layui-form-label required">标题</div>
                    <div class="layui-input-block">
                        <input type="text" name="title" lay-verify="required" lay-reqtext="标题不可为空" placeholder="请输入标题" value="" class="layui-input">
                    </div>
                </div>
                <div class="layui-form-item">
                    <label class="layui-form-label required">编辑公告</label>
                    <div class="layui-input-block">
                        <div id="editor" style="margin: 50px 0 50px 0">
                            <p>欢迎使用 <b>wangEditor</b> 富文本编辑器</p>
                        </div>
                    </div>
                </div>
                <div class="layui-form-item">
                    <div class="layui-input-block">
                        <button class="layui-btn layui-btn-normal" lay-submit lay-filter="saveBtn">确认保存</button>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

<!-- 注意， 只需要引用 JS，无需引用任何 CSS ！！！-->
<script src="../static/lib/layui-v2.5.5/layui.js" charset="utf-8"></script>
<script src="../static/js/lay-config.js?v=1.0.4" charset="utf-8"></script>
<script type="text/javascript">
    layui.use(['layer','wangEditor', 'table','form'], function () {
        var $ = layui.jquery,
            layer = layui.layer,
            form = layui.form,
            wangEditor = layui.wangEditor,
            table = layui.table;
        //数据表格
        var tableIns = table.render({
            elem: '#currentTableId',
            url: '/notice/list',
            toolbar: '#toolbarDemo',
            cols: [
                [
                    {type: "checkbox", width: 50},
                    {field: 'id', width: 80, title: 'ID', sort: true,align: "center"},
                    {field: 'title', width: 350, title: '公告标题',align: "center"},
                    {field: 'publishTime', width: 170, title: '发布时间', sort: true,align: "center",templet:
                            "<div>{{layui.util.toDateString(d.publishTime, 'yyyy-MM-dd HH:mm:ss')}}</div>"},
                    {field: 'content',width:536,  title: '正文'},
                    {title: '操作', minWidth: 150, toolbar: '#currentTableBar', align: "center"}
                ]
            ],
            limits: [10, 15, 20, 25, 50, 100],
            limit: 15,
            page: true,
            done: function(res,curr,count){ //解决当一页的最后一个数据被删除后，不会跳转到前一页的问题
                //判断当前页码是否大于1且当前页数据量为0
                if(curr > 1 && res.data.length == 0){
                    var pageValue = curr - 1;
                    //刷新数据表格的数据
                    tableIns.reload({
                        page: {curr:pageValue}
                    })
                }
            }
        });

        //编辑器
        var editor = new wangEditor('#editor');
        editor.customConfig.pasteFilterStyle = false;
        editor.customConfig.customAlert = function (info) {
            layer.msg(info);
        };
        editor.customConfig.menus = [
            'head',  // 标题
            'bold',  // 粗体
            'fontSize',  // 字号
            'fontName',  // 字体
            'underline',  // 下划线
            'strikeThrough',  // 删除线
            'foreColor',  // 文字颜色
            'backColor',  // 背景颜色
            'link',  // 插入链接
            'list',  // 列表
            'justify',  // 对齐方式
            'emoticon',  // 表情
            'undo',  // 撤销
            'redo'  // 重复
        ]
        editor.create();

        var url,mainIndex;
        /**
         * 发布公告
         * */
        function openAddWindow() {
            mainIndex = layer.open({
                title: '发布公告',
                type: 1,
                shade: 0.2,
                maxmin:true,
                shadeClose: true,
                area: ['75%', '90%'],   //宽，高
                content: $("#addOrUpdateWindow"),   //引用的内容窗口
                success: function () {
                    //提交地址
                    url = "/notice/publish";
                    //清空编辑器数据
                    editor.txt.clear();
                    //清空表单数据
                    $("#dataFrm")[0].reset();
                }
            })
        }

        /**
         * toolbar监听头部工具栏事件
         */
        table.on('toolbar(currentTableFilter)', function (obj) {
            if (obj.event === 'add') {  // 监听添加操作
                openAddWindow();
            }
        });

        //监听提交
        form.on('submit(saveBtn)', function (data) {
            //获取html内容
            let content = editor.txt.html();
            data.field.content = content;
            //发送请求
            $.post(url,data.field,function (result) {
                if (result.success){
                    //成功
                    layer.alert(result.message,{icon:1});
                    //刷新当前数据表格
                    tableIns.reload();
                    //关闭当前窗口
                    layer.close(mainIndex);
                }else {
                    //失败
                    layer.alert(result.message,{icon:2});
                }
            },"json");
            return false;
        });


        /**
         * 编辑公告
         * @param data 行数据
         */
        function openUpdateView(data) {
            mainIndex = layer.open({
                title: '修改公告',
                type: 1,
                shade: 0.2,
                maxmin:true,
                shadeClose: true,
                area: ['75%', '90%'],   //宽，高
                content: $("#addOrUpdateWindow"),   //引用的内容窗口
                success: function () {
                    //提交地址
                    url = "/notice/update";
                    //编辑器数据回显
                    editor.txt.html(data.content);
                    //表单数据回显
                    form.val("dataFrm",data);

                }
            })
        }

        /**
         * 删除公告
         * @param data 行数据
         */
        function deleteById(data) {
            //提示用户是否确认删除
            layer.confirm('确定要删除这个公告吗？',{icon:3,title:"提示"}, function (index) {
                // obj.del();
                //发送删除请求
                $.post("/notice/del", {"id":data.id},function (result) {
                    if (result.success){
                        //成功
                        layer.alert(result.message,{icon:1});
                        //刷新当前数据表格
                        tableIns.reload();
                    }else{
                        //提示
                        layer.alert(result.message,{icon:2})
                    }
                },"json");
                layer.close(index);
            });
        }

        //监听行工具栏事件（编辑与单项删除）
        table.on('tool(currentTableFilter)', function (obj) {
            var data = obj.data;
            if (obj.event === 'edit') {
                openUpdateView(data);
                return false;
            } else if (obj.event === 'delete') {
                deleteById(data);
            }
        });
    });
</script>
</body>
</html>